/*
 * NodoHoja.h
 *
 *  Created on: Sep 20, 2010
 *      Author: nicoabie
 */
#ifndef NODOHOJA_H_
#define NODOHOJA_H_



#include "Nodo.h"
#include "../src/Common/Utils.h"
#include "Registro.h"
#include <iostream>
#include <string>

class NodoHoja : public Nodo {

private:

	list<Registro*> registros;
	int idHojaSiguiente;


public:

	list<Registro*>* getListaRegistros();

	NodoHoja();
	NodoHoja(list<Registro*> registros, int IdHojaSiguiente);

	void setIdHojaSiguiente(int id);

	int getIdHojaSiguiente();

	/*
	 * Guarda el registro en la lista y devuelve el resultado de
	 * la operacion, la cual puede haber sido exitosa (0), registro duplicado (1)
	 * u overflow (-1)
	 */
	int insertarRegistro(Registro* registro);

	//debe ser de clase para que sirva como comparador.
	static bool compararRegistros(Registro* registroUno, Registro* registroDos);

	//devuelve -1 si no es encontrado el registro
	int getPosicionRegistro(Registro* registro);

	void partir(Nodo* hojaHermana, long tamanioCubeta,char** keyAscendente, int* idNodoAscendente);

	long getEspacioOcupado();

	/*
	 * tipo, id, nivel, cantidadRegistros, registro1, ...,registroN , siguienteHoja
	 */
	string toString();

	/*
	 * tipo, id, nivel, cantidadRegistros, registro1, ...,registroN , siguienteHoja
	 */
	void fromString(string stream);

	void borrarListaRegistros();

	 virtual ~NodoHoja();
};

#endif /* NODOHOJA_H_ */
